package cube.data.util;

/**
 * 数组处理工具
 * 
 * @author abiao
 */
public abstract class Array {

    /**
     * 以十六进制格式输出byte数组
     */
    public static String format(byte... data) {
        return new ArrayFormat<Byte>(Array.wrap(data)) {
            public String format(Byte t) {
                return DataUtil.byte2LowerCaseHex(t);
            }
        }.toString();
    }

    /**
     * 以二进制格式输出byte数组
     */
    public static String formatBin(byte... data) {
        return new ArrayFormat<Byte>(Array.wrap(data)) {
            public String format(Byte t) {
                return DataUtil.byte2bin(t);
            }
        }.toString();
    }

    /**
     * 以十六进制格式输出char数组
     */
    public static String format(char... data) {
        return new ArrayFormat<Character>(Array.wrap(data)) {
            public String format(Character t) {
                return DataUtil.getHighHex(t) + DataUtil.getLowHex(t);
            }
        }.toString();
    }

    /**
     * 格式输出int数组
     */
    public static String format(int... data) {
        return new ArrayFormat<Integer>(Array.wrap(data)) {
            public String format(Integer t) {
                return String.valueOf(t);
            }
        }.toString();
    }

    /**
     * 基本类型数组转为封装类型数组
     */
    public static Byte[] wrap(byte... data) {
        Byte[] wrap = new Byte[data.length];
        for (int i = 0; i < data.length; i++) {
            wrap[i] = data[i];
        }
        return wrap;
    }

    /**
     * 基本类型数组转为封装类型数组
     */
    public static Integer[] wrap(int... data) {
        Integer[] wrap = new Integer[data.length];
        for (int i = 0; i < data.length; i++) {
            wrap[i] = data[i];
        }
        return wrap;
    }

    /**
     * 基本类型数组转为封装类型数组
     */
    public static Character[] wrap(char... data) {
        Character[] wrap = new Character[data.length];
        for (int i = 0; i < data.length; i++) {
            wrap[i] = data[i];
        }
        return wrap;
    }
}
